home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / comm / bbs / WWBBSDoors.lha / WWBBS / rexxDoors / Hollywood_Squares.rexx < prev    next >
OS/2 REXX Batch file  |  1995-04-27  |  22KB  |  611 lines

  1. /*********************************************************
  2. *                                                         *
  3. *    Hollywood Squares 2.1 (C) 1991 Barry Christiansen    *
  4. *                A trivia game for SKYLINE                *
  5. *                                                         *
  6. *    This ARexx script is freely ditributable but not     *
  7. *   in the Public Domain.  You may use this script for    *
  8. *  any purpose you see fit other than that of generating  *
  9. *                        a profit.                        *
  10. *                                                         *
  11. *   Disclaimer: I hearby proclaim I am NOT responsible    *
  12. *  accountable, ammenable, answerable or liable for any   *
  13. *  damage this software may cause you and your children   *
  14. *              or you children's children.                *
  15. *                                                         *
  16. *                      Call THE HOST                      *
  17. *                     (605) 697-5653                      *
  18. *                                                         *
  19. *  Rewritten for BBBBS by Richard Lee Stockton 14-Apr-91  *
  20. *                                                         *
  21. *          ANSI ENHANCED VERSION BY Rick Lembrée          *
  22. *                                                         *
  23. *  ANSI version adapted to BBBBS by Matt English 1-13-93  *
  24. *                                                         *
  25. **********************************************************/
  26. options results
  27.  
  28. CR='0D'x
  29. CALL TIME('R')
  30. SIGNAL ON SYNTAX
  31. SIGNAL ON BREAK_C
  32. SIGNAL ON BREAK_E
  33.  
  34. PARSE ARG UserName . . colorflag secs .
  35. IF secs='' THEN secs=3600
  36. bbspath=GETCLIP('BBS_path')
  37.  
  38. BBSIDENTIFY USER
  39. PARSE VAR RESULT Username From Acces .
  40. UserName = substr(Username,2,length(Username)-2)
  41.  
  42. BBSIDENTIFY EMULATION
  43. PARSE VAR RESULT type .
  44. if type = "ANSI" then
  45.   colorflag=1
  46. else
  47.   colorflag=0
  48.  
  49. bbsname =     'the BBS'                   /* The name of your BBS                */
  50. sysopname =   '+ AMIGA +'                 /* The name the Sysop goes by          */
  51. HSData = bbspath'rexxDoors/Data/HS.Users' /* location of user data               */
  52. HSQuestions = bbspath'rexxDoors/Data/'    /* location of questions file          */
  53. Qfiles=       4                           /* Number of questions files available */
  54. TotalPlays =  5                           /* How many plays per day              */
  55.  
  56.  
  57. if ~show('L','rexxsupport.library') then do
  58.   addlib('rexxsupport.library',0,-30,0)
  59. end
  60.  
  61. if colorflag = 1 then do
  62.  
  63. say' Colors on!'cr
  64.  
  65.   RED = '';  GRN = '';  YEL = '';  BLU = '';  MAG = '';  CYA = '';  BLK = '';  BAK = '';  OFF = '' ;  BSLF = 'DB'
  66.   P7='H3H';P8='9H';P9='5H';P4='3H';P5='9H';P6='5H';P1='33H';P2='39H';P3='45H'
  67.   CLS = 'H';bak1 = ''
  68.   P11='1H';P12='H';CLEOL=''
  69.   BIGX = ''YEL'   'BSLF' X 'BSLF'   '; BIGO = ''MAG'   'BSLF' O 'BSLF'   '
  70. end
  71. else do
  72.   RED = '';  GRN = '';  YEL = '';  BLU = '';  MAG = '';  CYA = '';  BAK = '';  BLK = '';  OFF = '';  CLS = CR''CR
  73.   P11 = CR; P12 = CR;CLEOL='';bak1= ''
  74.   BIGX = '    X    '; BIGO = '    O    '
  75. end
  76.  
  77. UserName2 = center(UserName,26)
  78. UserWins = 0; OtherWins = 0; UserLoses = 0; OtherLoses = 0
  79. RePlay = 0; i = random(1,999,time('S')) /* initalize random number generator */
  80. call Intro
  81. CALL delay(100)
  82. SAY CR'                        Do You Need Instructions (Y/N)? '
  83. call Hotkey
  84. if answer = 'Y'  then call Instructions
  85. SAY CR'            Do You Want To See Hollywood Squares User Stats (Y/N)? '
  86. call Hotkey
  87. if answer = 'Y' then call ShowList
  88.  
  89.  
  90.   /* Main program body follows */
  91.  
  92. MAIN:
  93. say''cls''cr
  94. CALL TRANSMIT CR''GRN'Getting questions ready, Hold on...'
  95. filenum = random(1,Qfiles)
  96. address command 'copy 'hsquestions||'Questions'||filenum' RAM:Questions'
  97. CALL OPEN('Qdata','Ram:Questions','R')
  98. i = 0
  99. do until eof('Qdata')
  100.   do j = 1 to 6
  101.     line = readln('Qdata')
  102.   end
  103.   i = i+1
  104. end
  105. CALL CLOSE('Qdata')
  106. TQuestions = i-1
  107. over = 0
  108. call OpenThings
  109. do i = 1 to 9
  110.   SQ.i = ''
  111. end
  112. call Refresh
  113. do forever
  114.   CALL checkBBS()
  115.   /* select a square and check if valid */
  116.   
  117.   validsquare = 0
  118.   do while validsquare = 0
  119.     squarec = '' 
  120.     do while squarec < '1' | answer > '9'
  121.  
  122.       say''P12'                    '
  123.  
  124.       SAY ''BLU''P12' Select A Square: 'GRN
  125.  
  126.       call Hotkey; squarec = answer
  127.       if squarec = 'R' then call Refresh
  128.     end
  129.     squaren = value(squarec)
  130.     if SQ.squaren = '' then validsquare = 1
  131.     if validsquare = 0 then do
  132.       CALL TRANSMIT ''RED'Invalid square!               '
  133.       CALL delay(50)
  134.     end
  135.   end
  136.  
  137.   /* Select a random question */
  138.   
  139.   CALL TRANSMIT YEL''P11'Loading question.....'
  140.   RanQ = RANDOM(1,TQuestions)
  141.   CALL OPEN('Qdata','Ram:Questions','R')
  142.   Qcount = 1
  143.   do until eof('Qdata')
  144.     if RanQ = Qcount then do
  145.       Question = readln('Qdata')
  146.       do i = 1 to 4
  147.         answer.i = readln('Qdata')
  148.       end
  149.       line = readln('Qdata')
  150.       leave
  151.     end
  152.     else do i = 1 to 6
  153.       line = readln('Qdata')
  154.     end
  155.   Qcount = Qcount + 1
  156.   end
  157.   CALL CLOSE('Qdata')
  158.   
  159.   /* Display the Question and randomize the answers */
  160.   
  161.   CALL TRANSMIT ''P11''Question''OFF''
  162.   firsttime = 0
  163.   do i = 4 to 1 by -1
  164.     j = random(1,i)
  165.     Pick.i = answer.j
  166.     if j = 1 & firsttime = 0 then do
  167.       CorrectAnswer = i
  168.       firsttime = 1
  169.     end
  170.     if j < i then do x = j to i-1
  171.       xx = x + 1
  172.       answer.x = answer.xx
  173.     end
  174.   end
  175.   CALL TRANSMIT ' '
  176.   do i = 1 to 4
  177.     CALL TRANSMIT ''BLU'['i'] - 'Pick.i
  178.   end
  179.   Guess = '';rfrsh = 0
  180.   do while Guess < '1' | Guess > '4'
  181.     say''P12'                    '
  182.     SAY YEL''P12'Enter Your Guess: 'BLU
  183.     call Hotkey
  184.     Guess = answer
  185.     if Guess = 'R' then do
  186.       call Refresh
  187.       CALL TRANSMIT CYA''P11''Question
  188.       CALL TRANSMIT ' '
  189.       do i = 1 to 4
  190.         CALL TRANSMIT YEL'['i'] - 'BLU''Pick.i
  191.       end
  192.     end
  193.   end
  194.   XO = BIGO; who = MAG'O'
  195.   SQ.squaren = XO
  196.   whostring = P11''GRN'Correct!  'who''BLU'  Gets the Square!'CLEOL
  197.   if Guess ~= CorrectAnswer then do
  198.     XO = BIGX; who = YEL'X'
  199.     SQ.squaren = XO
  200.     whostring = P11''RED'Incorrect!  'who''BLU'  Gets the Square!   'CYA'The correct answer was 'YEL''CorrectAnswer''CLEOL''
  201.     call check
  202.     if win = 'yes' then do
  203.       whostring = P11''RED'Incorrect!  'GRN'The Square remains open!  'CYA'The correct answer was 'YEL''CorrectAnswer''CLEOL''
  204.       SQ.squaren = ''; XO = 'null'
  205.     end
  206.   end
  207.   CALL TRANSMIT whostring||CR
  208.   CALL delay(100)
  209.   if colorflag = 1 then do
  210.     do i = 1 to 5
  211.       CALL TRANSMIT CLEOL
  212.     end
  213.   end
  214.   call clear11
  215.   if colorflag = 1 then CALL TRANSMIT P7''SQ.7''P8''SQ.8''P9''SQ.9''P4''SQ.4''P5''SQ.5''P6''SQ.6''P1''SQ.1''P2''SQ.2''P3''SQ.3
  216.   else call VanillaDisplay
  217.   call Check
  218.   if win = 'yes' then call won
  219.   if win = 'tie' then call tie
  220.   if Over = 1 then leave
  221.  
  222.  
  223.   validsquare = 0
  224.   do while validsquare = 0
  225.     rannum = RANDOM(1,9)
  226.     if SQ.rannum  = '' then validsquare = 1
  227.   end
  228.   Both = BIGO
  229.   call BestBet
  230.   Both = BIGX
  231.   call BestBet
  232.   squaren = rannum
  233.   Correct = RANDOM(1,2)
  234.   if Correct = 1 then do
  235.     XO = BIGX; who = YEL'X'
  236.     whostring = P11''who''BLU'  Gets the Square!'CLEOL
  237.     SQ.squaren = XO
  238.     CALL TRANSMIT P11''CYA''subword(OtherName,1,1)' Goes For #'squaren' and answers his question'GRN' CORRECTLY!'
  239.  
  240.     CALL delay(100)
  241.   end
  242.   else do
  243.     XO = BIGO; who = MAG'O'
  244.     whostring = P11''who''BLU'  Gets the Square!'CLEOL
  245.     SQ.squaren = XO
  246.     CALL TRANSMIT P11''CYA''subword(OtherName,1,1)' Goes For #'squaren' and answers his question'RED' INCORRECTLY!'
  247.     CALL delay(100)
  248.     call check
  249.     if win = 'yes' then do
  250.       whostring = P11''GRN'The Square remains open!'CLEOL
  251.       SQ.squaren = ''; XO = 'null'
  252.     end
  253.   end
  254.   CALL TRANSMIT whostring
  255.   CALL delay(100)
  256.  
  257.   call clear11
  258.   if colorflag = 1 then CALL TRANSMIT P7''SQ.7''P8''SQ.8''P9''SQ.9''P4''SQ.4''P5''SQ.5''P6''SQ.6''P1''SQ.1''P2''SQ.2''P3''SQ.3
  259.   else call VanillaDisplay
  260.   call Check
  261.   if win = 'yes' then call won
  262.   if win = 'tie' then call tie
  263.   if Over = 1 then leave
  264.  end
  265.  
  266. RePlay = RePlay + 1
  267. if RePlay = TotalPlays then do
  268.   CALL TRANSMIT RED''P11'You Have Used All Your Turns For This Session!'
  269.   CALL delay(50)
  270.   signal BYE
  271.  end
  272. SAY BLU''P11'Do You Want To Play Again (Y/N)? 'GRN
  273. call Hotkey
  274. if answer = 'Y' then signal MAIN:
  275. signal BYE
  276.  
  277. Refresh:
  278.  
  279. if colorflag = 1 then do
  280.   CALL TRANSMIT CLS
  281.   CALL TRANSMIT MAG'1H HOLLYWOOD SQUARES'
  282.   CALL TRANSMIT CYA'1H'bak1'#--7-----8-----9--#'off''
  283.   CALL TRANSMIT CYA'1H'bak1'|     |     |     |'off''
  284.   CALL TRANSMIT CYA'1H'bak1'|     |     |     |'off''
  285.   CALL TRANSMIT CYA'1H'bak1'|     |     |     |'off''
  286.   CALL TRANSMIT CYA'1H'bak1'|--4--+--5--+--6--|'off''
  287.   CALL TRANSMIT CYA'1H'bak1'|     |     |     |'off'  'GRN''UserName2
  288.   CALL TRANSMIT CYA'1H'bak1'|     |     |     |'off'             'BLU'VS'
  289.   CALL TRANSMIT CYA'31H'bak1'|     |     |     |'off'  'GRN''Othername2
  290.   CALL TRANSMIT CYA'31H'bak1'|--1--+--2--+--3--|'off''
  291.   CALL TRANSMIT CYA'31H'bak1'|     |     |     |'off''
  292.   CALL TRANSMIT CYA'31H'bak1'|     |     |     |'off''
  293.   CALL TRANSMIT CYA'31H'bak1'|     |     |     |'off''
  294.   CALL TRANSMIT CYA'31H'bak1'#-----------------#'off''
  295.   CALL TRANSMIT P7''SQ.7''P8''SQ.8''P9''SQ.9''P4''SQ.4''P5''SQ.5''P6''SQ.6''P1''SQ.1''P2''SQ.2''P3''SQ.3
  296. end
  297.  
  298. else call VanillaDisplay
  299. return
  300.  
  301. VanillaDisplay:
  302. CALL TRANSMIT ''
  303. CALL TRANSMIT '           HOLLYWOOD SQUARES'
  304. CALL TRANSMIT '          +-----+-----+-----+'
  305. CALL TRANSMIT '          | 'substr(SQ.7,1,3,' ')' | 'substr(SQ.8,1,3,' ')' | 'substr(SQ.9,1,3,' ')' |'
  306. CALL TRANSMIT '          | 'substr(SQ.7,4,3,' ')' | 'substr(SQ.8,4,3,' ')' | 'substr(SQ.9,4,3,' ')' |'
  307. CALL TRANSMIT '          | 'substr(SQ.7,7,3,' ')' | 'substr(SQ.8,7,3,' ')' | 'substr(SQ.9,7,3,' ')' |'
  308. CALL TRANSMIT '          |-----+-----+-----+'
  309. CALL TRANSMIT '          | 'substr(SQ.4,1,3,' ')' | 'substr(SQ.5,1,3,' ')' | 'substr(SQ.6,1,3,' ')' | 'UserName2
  310. CALL TRANSMIT '          | 'substr(SQ.4,4,3,' ')' | 'substr(SQ.5,4,3,' ')' | 'substr(SQ.6,4,3,' ')' |             VS'
  311. CALL TRANSMIT '          | 'substr(SQ.4,7,3,' ')' | 'substr(SQ.5,7,3,' ')' | 'substr(SQ.6,7,3,' ')' | 'OtherName2
  312. CALL TRANSMIT '          +-----+-----+-----+'
  313. CALL TRANSMIT '          | 'substr(SQ.1,1,3,' ')' | 'substr(SQ.2,1,3,' ')' | 'substr(SQ.3,1,3,' ')' |'
  314. CALL TRANSMIT '          | 'substr(SQ.1,4,3,' ')' | 'substr(SQ.2,4,3,' ')' | 'substr(SQ.3,4,3,' ')' |'
  315. CALL TRANSMIT '          | 'substr(SQ.1,7,3,' ')' | 'substr(SQ.2,7,3,' ')' | 'substr(SQ.3,7,3,' ')' |'
  316. CALL TRANSMIT '          +-----+-----+-----+'
  317. CALL TRANSMIT ''
  318. return
  319.  
  320. Clear12:
  321. if colorflag = 1 then CALL TRANSMIT P12'                              '
  322. return
  323.  
  324. Clear11:
  325. if colorflag = 1 then CALL TRANSMIT P11||CLEOL
  326. return
  327.  
  328. BestBet:
  329.   if SQ.5 = '' then rannum = 5
  330.   if SQ.7 = Both & SQ.8 = Both & SQ.9 = '' then rannum = 9
  331.   if SQ.7 = Both & SQ.9 = Both & SQ.8 = '' then rannum = 8
  332.   if SQ.8 = Both & SQ.9 = Both & SQ.7 = '' then rannum = 7
  333.   if SQ.4 = Both & SQ.5 = Both & SQ.6 = '' then rannum = 6
  334.   if SQ.4 = Both & SQ.6 = Both & SQ.5 = '' then rannum = 5
  335.   if SQ.5 = Both & SQ.6 = Both & SQ.4 = '' then rannum = 4
  336.   if SQ.1 = Both & SQ.2 = Both & SQ.3 = '' then rannum = 3
  337.   if SQ.1 = Both & SQ.3 = Both & SQ.2 = '' then rannum = 2
  338.   if SQ.2 = Both & SQ.3 = Both & SQ.1 = '' then rannum = 1
  339.   if SQ.7 = Both & SQ.4 = Both & SQ.1 = '' then rannum = 1
  340.   if SQ.7 = Both & SQ.1 = Both & SQ.4 = '' then rannum = 4
  341.   if SQ.4 = Both & SQ.1 = Both & SQ.7 = '' then rannum = 7
  342.   if SQ.8 = Both & SQ.5 = Both & SQ.2 = '' then rannum = 2
  343.   if SQ.8 = Both & SQ.2 = Both & SQ.5 = '' then rannum = 5
  344.   if SQ.5 = Both & SQ.2 = Both & SQ.8 = '' then rannum = 8
  345.   if SQ.9 = Both & SQ.6 = Both & SQ.3 = '' then rannum = 3
  346.   if SQ.9 = Both & SQ.3 = Both & SQ.6 = '' then rannum = 6
  347.   if SQ.6 = Both & SQ.3 = Both & SQ.9 = '' then rannum = 9
  348.   if SQ.7 = Both & SQ.5 = Both & SQ.3 = '' then rannum = 3
  349.   if SQ.7 = Both & SQ.3 = Both & SQ.5 = '' then rannum = 5
  350.   if SQ.5 = Both & SQ.3 = Both & SQ.7 = '' then rannum = 7
  351.   if SQ.9 = Both & SQ.5 = Both & SQ.1 = '' then rannum = 1
  352.   if SQ.9 = Both & SQ.1 = Both & SQ.5 = '' then rannum = 5
  353.   if SQ.5 = Both & SQ.1 = Both & SQ.9 = '' then rannum = 9
  354. return
  355.  
  356. Check:
  357. win = 'no'
  358. if SQ.7 = XO & SQ.8 = XO & SQ.9 = XO then win = 'yes'
  359. if SQ.4 = XO & SQ.5 = XO & SQ.6 = XO then win = 'yes'
  360. if SQ.1 = XO & SQ.2 = XO & SQ.3 = XO then win = 'yes'
  361. if SQ.7 = XO & SQ.4 = XO & SQ.1 = XO then win = 'yes'
  362. if SQ.8 = XO & SQ.5 = XO & SQ.2 = XO then win = 'yes'
  363. if SQ.9 = XO & SQ.6 = XO & SQ.3 = XO then win = 'yes'
  364. if SQ.7 = XO & SQ.5 = XO & SQ.3 = XO then win = 'yes'
  365. if SQ.9 = XO & SQ.5 = XO & SQ.1 = XO then win = 'yes'
  366. if SQ.7 ~= '' & SQ.8 ~= '' & SQ.9 ~= '' & SQ.4 ~= '' & SQ.5 ~= '' & SQ.6 ~= '' & SQ.1 ~= '' & SQ.2 ~= '' & SQ.3 ~= '' & win = 'no' then win = 'tie'
  367. return
  368.  
  369. tie:
  370. CALL TRANSMIT 'It''s A draw! Nobody wins.'
  371. CALL delay(100);
  372. CALL CLOSE('NewUserData')
  373. address command 'Delete >NIL: T:HS.Temp'
  374. Over = 1
  375. return
  376.  
  377. Won:
  378. if who = YEL'X' then do
  379.   OtherWins = OtherWins + 1
  380.   UserLoses = UserLoses + 1
  381.   CALL TRANSMIT CYA''P11''CR''CR''subword(OtherName2,1,1)''GRN' WON!'
  382.   CALL TRANSMIT CYA'This Makes A Grand Total Of 'YEL''UserLoses''CYA' Games You Have 'RED'LOST!'CR
  383. end
  384. else do
  385.   UserWins = UserWins + 1
  386.   OtherLoses = OtherLoses + 1
  387.   CALL TRANSMIT CYA''P11''CR''CR'You 'GRN' WON'CYA' this round!'
  388.   CALL TRANSMIT CYA'This Makes A Grand Total Of 'YEL''UserWins''CYA' Games You Have 'GRN'WON!'CR
  389. end
  390. call SaveIt
  391. Over = 1
  392. return
  393.  
  394. Intro:
  395. call transmit CLS
  396. call transmit GRN'                  'BLU'  ___ 'GRN'      'BLU'      'GRN'      'BLU'      'GRN'  ___ 'BLU'  ___ 'GRN'  __  '
  397. call transmit GRN'             |   |'BLU' |   |'GRN' |    'BLU' |    'GRN' \   /'BLU' |   |'GRN' |   |'BLU' |   |'GRN' |  \  '
  398. call transmit GRN'             |   |'BLU' |   |'GRN' |    'BLU' |    'GRN'  \ / 'BLU' |   |'GRN' |   |'BLU' |   |'GRN' |   | '
  399. call transmit GRN'             |---|'BLU' |   |'GRN' |    'BLU' |    'GRN'   |  'BLU' | | |'GRN' |   |'BLU' |   |'GRN' |   | '
  400. call transmit GRN'             |   |'BLU' |   |'GRN' |    'BLU' |    'GRN'   |  'BLU' |/ \|'GRN' |   |'BLU' |   |'GRN' |   | '
  401. call transmit GRN'             |   |'BLU' |___|'GRN' |____'BLU' |____'GRN'   |  'BLU' |   |'GRN' |___|'BLU' |___|'GRN' |__/  '
  402. call transmit GRN'                    ____'BLU'  ___ 'GRN'      'BLU'  ___ 'GRN'  ___ 'BLU'  ____'GRN'  ____'
  403. call transmit GRN'                   |    'BLU' |   |'GRN' |   |'BLU' |   |'GRN' |   |'BLU' |    'GRN' |    '
  404. call transmit GRN'                   |    'BLU' |   |'GRN' |   |'BLU' |   |'GRN' |   |'BLU' |    'GRN' |    '
  405. call transmit GRN'                    --- 'BLU' |   |'GRN' |   |'BLU' |---|'GRN' |--- 'BLU' |--  'GRN'  --- '
  406. call transmit GRN'                       |'BLU' |   |'GRN' |   |'BLU' |   |'GRN' |  \ 'BLU' |    'GRN'     |'
  407. call transmit GRN'                   ____|'BLU' |_\_|'GRN' |___|'BLU' |   |'GRN' |   \'BLU' |____'GRN' ____|'
  408. call transmit GRN'                        'BLU'    \'CR
  409. call transmit MAG'                                  Version 2.1                 '
  410. call transmit '                        Written by Barry Christiansen'
  411. call transmit '                    Original by  J.L. White and D.F. Duck'
  412. call delay(50)
  413. return
  414.  
  415. OpenThings:
  416. Players = 0
  417. if ~exists(HSData) then do
  418.   CALL OPEN('OldUdata',HSData,'W')
  419.   CALL CLOSE('OldUdata')
  420. end
  421. CALL OPEN('OldUdata',HSData,'R')
  422. do until eof('OldUdata')
  423.   line = readln('OldUdata')
  424.   Players = Players + 1
  425. end
  426. CALL CLOSE('OldUdata')
  427. Players = Players - 1
  428. if Players <= 1 then Players = 1
  429. WhichPlayer = Random(1,Players)
  430. x = 0
  431. CALL OPEN('OldUdata', HSData ,'R')
  432. do until eof('OldUdata')
  433.   line = readln('OldUdata')
  434.   x = x + 1
  435.   parse var line name ' : ' score
  436.   if x = WhichPlayer then OtherName = name
  437.   if OtherName = UserName then do 
  438.     line = readln('OldUdata')
  439.     parse var line name ' : ' score
  440.     OtherName = name
  441.   end
  442. end
  443. CALL CLOSE('OldUdata')
  444. if OtherName = '' then do
  445.   OtherName = sysopname
  446.   OtherName2 = center(OtherName,26,' ') 
  447. end
  448. CALL OPEN('OldUdata',HSData,'R')
  449. CALL OPEN('NewUserData','T:HS.Temp','W')
  450. do until eof('OldUdata')
  451.   line = readln('OldUdata')
  452.   parse var line name ' : ' score ' : ' score2
  453.   if name = UserName then do  
  454.     UserWins = value(score)
  455.     UserLoses = value(score2)
  456.   end
  457.   if name = OtherName then do
  458.     OtherName = name
  459.     OtherName2 = center(OtherName,26,' ') 
  460.     OtherWins = value(score)
  461.     OtherLoses = value(score2)
  462.   end
  463.   if line~='' & name ~= UserName & name ~= OtherName THEN
  464.     CALL writeln('NewUserData',line)
  465. end
  466. CALL CLOSE('OldUdata')
  467. return
  468.  
  469. ShowList:
  470. Num = 1
  471. call HEADER
  472. CALL OPEN('OldUdata',HSData,'R')
  473. TLines = 0
  474. do until eof('OldUdata')
  475.      line = readln('OldUdata')
  476.      parse var line name ' : ' score ' : ' score2
  477.      lineb = readln('OldUdata')
  478.      parse var lineb bname ' : ' bscore ' : ' bscore2
  479.      if line ~= '' then CALL TRANSMIT BAK''BLK'| o |  'left(name,20)''right(score,3)'  'right(score2,3)'      'left(bname,20)'  'right(bscore,3)'  'right(bscore2,3)'  | o |'
  480.   TLines = TLines + 1
  481.   if TLines = 10 then do
  482.     CALL TRANSMIT BAK''BLK'| o |                                                                    'BLK'| o |'
  483.     CALL TRANSMIT BAK''BLK'| o |'BLU'                      Continued on next Page...                     'BLK'| o |'
  484.     CALL TRANSMIT BAK''BLK'| o |                                                                    'BLK'| o |'OFF''
  485.     call PressReturn
  486.     Num = Num + 1
  487.     call Header 
  488.     TLines = 0
  489.     end
  490.   end
  491. CALL CLOSE('OldUdata')
  492. CALL TRANSMIT '| o |                                                                    | o |'
  493. CALL TRANSMIT '| o |                        End Of User Listing!                        | o |'
  494. CALL TRANSMIT '| o |                                                                    | o |'OFF''
  495. call PressReturn
  496. return
  497.  
  498. HEADER:
  499. call transmit CLS
  500. call transmit BAK''BLK'| o |                                                             'BLU'Page'Num'  'BLK'| o |'
  501. call transmit BAK''BLK'| o |                      'BLU'Hollywood Squares Players                     'BLK'| o |'
  502. call transmit BAK''BLK'| o |                                                                    'BLK'| o |'
  503. call transmit BAK''BLK'| o |  'MAG'Players Names       Won Lost      Players Names         Won Lost  'BLK'| o |'
  504. call transmit BAK''BLK'| o |  'MAG'------------------- --- ----      --------------------  --- ----  'BLK'| o |'
  505. return
  506.  
  507. Instructions:
  508. call transmit CLS
  509. call transmit CYA' Welcome to Hollywood Squares. This game combines Tic Tac Toe with Trivial'
  510. call transmit 'Pursuit. The object is to get three "O" in a row. This can be horizontal,'
  511. call transmit 'vertical, or diagonal. First you select which square you wish to play for.'
  512. call transmit 'A random question will then appear. If you answer correctly you get the'
  513. call transmit 'square, if not "X" gets the square. Your opponent is selected randomly from'
  514. call transmit 'among the list of players in the game. It keeps track of how many wins and'
  515. call transmit 'loses you have. The "X" player has a 50/50 chance of answering the question'
  516. call transmit 'right. If he is wrong you get the square he tries for. The "X" player is a'
  517. call transmit 'pretty good player. He knows when to block and when to go for a win.'
  518. call transmit ' '
  519. call transmit ' The squares on the board are numbered like a keypad:'BLU'  7  8  9'
  520. call transmit '                                                       4  5  6'
  521. call transmit '                                                       1  2  3'
  522. call transmit ' '
  523. call transmit CYA' At any prompt you can hit "Q" to end the game and return to the bbs.'
  524. call transmit 'If while during the game, the screen gets messed up, enter "R" to refresh'
  525. call transmit 'the screen.  If you''ve ever watched HollyWood Squares on TV, then you'
  526. call transmit 'should have no problems playing this game.'
  527. call PressReturn
  528. call transmit CLS''CR''CR
  529. return
  530.  
  531.  
  532. SaveIt:
  533.   do i = 1 to 500
  534.      end
  535.   CALL writeln('NewUserData',UserName' : 'UserWins' : 'UserLoses)
  536.   if UserName ~= OtherName then
  537.     CALL writeln('NewUserData',OtherName' : 'OtherWins' : 'OtherLoses)
  538.   CALL CLOSE('NewUserData')
  539.   if Loans > 0 then address command 'Copy T:HS.Temp to 'HSData
  540.   address command 'Delete >NIL: T:HS.Temp'
  541. return
  542.  
  543. HOTKEY:
  544. answer=readstr()
  545. if length(answer)>1 then signal HOTKEY: 
  546. if answer = 'Q' then signal BYE
  547. return 
  548.  
  549. PressReturn:
  550. CALL TRANSMIT ' '
  551. SAY BLU'Press 'GRN'[RETURN]'BLU' To Continue..'
  552. out=readch(STDIN)
  553. return
  554.  
  555. TRANSMIT:
  556. PARSE ARG string
  557. SAY string||CR
  558. RETURN;
  559.  
  560. /* Procedures for handeling Errors, Logging off and/or re-entering SKYLINE */
  561.  
  562. SYNTAX:
  563.   CALL TRANSMIT 'Line:' SIGL '   Error Code:' RC
  564.   CALL TRANSMIT '*SYNTAX ERROR*  External program error.  PLEASE notify SYSOP.'
  565.   signal BYE
  566.  
  567.  
  568. checkBBS:
  569. IF ADDRESS()~='BAUD' THEN RETURN 0
  570. IF TIME('E')>secs THEN SIGNAL BYE
  571. dcd
  572. IF RC=0 THEN EXIT
  573. temp=secs-TIME('E')
  574. IF temp<120 THEN SAY '*** Only' temp 'seconds left! ***'CR 
  575. RETURN 0
  576.  
  577. readstr: procedure
  578. str=''
  579. out=readch(STDIN)
  580.  call WRITECH(STDOUT,out)
  581.  do while out~=D2C(13)
  582.       if out=D2C(8) then do
  583.          str=SUBSTR(str,1,LENGTH(str)-1)
  584.          call WRITECH(STDOUT,' ')
  585.          call WRITECH(STDOUT,out)
  586.          end
  587.       else
  588.          str=INSERT(str,out)
  589.       out=readch(STDIN)
  590.       call WRITECH(STDOUT,out)
  591.     end
  592. say '0D'x
  593. return(UPPER(str))
  594.  
  595. prompt: procedure
  596. parse arg str
  597. writech(STDOUT,str)
  598. return 1
  599.  
  600. /* exit back to bbs */
  601.  
  602. BYE:
  603. BREAK_C:
  604. BREAK_E:
  605. say''cls''
  606. say' Thanks for playing!...'cr
  607. CALL TRANSMIT CR''CR'Returning to 'bbsname
  608. exit
  609.  
  610. /* Hollywood_Squares.rexx */
  611.